package sys

import (
	"ginweb-admin/commons/base/service"
	"ginweb-admin/global"
	"ginweb-admin/model/entity/sys"
)

type SysRoleApiService struct {
	service.BaseService[uint, sys.SysRoleAPi]
}

// 保存角色授权
func (service *SysRoleApiService) SaveRoleApis(roleId uint, sysRoleApis []*sys.SysRoleAPi) (err error) {
	// 开启事务
	tx := global.DB.Begin()

	// 删除角色对应的权限
	if err := tx.Where("role_id = ?", roleId).Delete(&sys.SysRoleAPi{}).Error; err != nil {
		// 事务回滚
		tx.Rollback()
		return err
	}
	// 保存角色对应的权限
	if err := tx.Create(sysRoleApis).Error; err != nil {
		// 事务回滚
		tx.Rollback()
		return err
	}
	// 事务提交
	return tx.Commit().Error
}

// 查询角色授权的信息
func (service *SysRoleApiService) SelectRoleApis(roleId uint) (sysApisList []*sys.SysApi, err error) {
	err = global.DB.Select("t2.* ").Table("sys_role_api t1,sys_api t2").
		Where("t1.role_id = ? AND t1.api_id = t2.id and t2.is_deleted = 0", roleId).Scan(&sysApisList).Error
	return sysApisList, err
}
